﻿using System.IO;

namespace YooAsset
{
    /// <summary>
    /// 缓存文件验证元素
    /// </summary>
    internal class VerifyCacheFileElement
    {
        public string PackageName { private set; get; }
        public string CacheGUID { private set; get; }
        public string FileRootPath { private set; get; }
        public string DataFilePath { private set; get; }
        public string InfoFilePath { private set; get; }

        public EVerifyResult Result;
        public string DataFileCRC;
        public long DataFileSize;

        public VerifyCacheFileElement(string packageName, string cacheGUID, string fileRootPath, string dataFilePath, string infoFilePath)
        {
            PackageName = packageName;
            CacheGUID = cacheGUID;
            FileRootPath = fileRootPath;
            DataFilePath = dataFilePath;
            InfoFilePath = infoFilePath;
        }

        public void DeleteFiles()
        {
            try
            {
                Directory.Delete(FileRootPath, true);
            }
            catch (System.Exception e)
            {
                YooLogger.Warning($"Failed delete cache bundle folder : {e}");
            }
        }
    }

    /// <summary>
    /// 下载文件验证元素
    /// </summary>
    internal class VerifyTempFileElement
    {
        public string TempDataFilePath { private set; get; }
        public string FileCRC { private set; get; }
        public long FileSize { private set; get; }

        public int Result = 0; // 注意：原子操作对象

        public VerifyTempFileElement(string tempDataFilePath, string fileCRC, long fileSize)
        {
            TempDataFilePath = tempDataFilePath;
            FileCRC = fileCRC;
            FileSize = fileSize;
        }
    }
}